<template>
  <div class="test-container">
    <div class="top-main">
      <search :listQuery="listQuery" :path="$route.name"></search>
    </div>
    <div class="bottom-main">
      <div class="list-button-group">
        <div class="button-item">
          <el-button type="primary" icon="el-icon-plus" @click="handleEdit">
            新增
          </el-button>
        </div>
      </div>
      <div class="table-list">
        <el-table
          v-loading="listLoading"
          :data="list"
          :element-loading-text="elementLoadingText"
          @selection-change="setSelectRows"
          highlight-current-row
          height="100%"
          :header-cell-style="{
            'border-bottom': '1px solid #cbcccd',
            'border-top': '1px solid #cbcccd',
          }"
        >
          <el-table-column
            show-overflow-tooltip
            type="selection"
          ></el-table-column>
          <el-table-column
            show-overflow-tooltip
            prop="huoweibh"
            label="货位编号"
            width="150"
          ></el-table-column>
          <el-table-column
            show-overflow-tooltip
            prop="huoweifl"
            label="货位分类"
          >
            <template slot-scope="scope">
              <span v-if="scope.row.huoweifl == 1">A型货位</span>
              <span v-if="scope.row.huoweifl == 2">B型货位</span>
            </template>
          </el-table-column>
          <el-table-column
            show-overflow-tooltip
            prop="huoweizt"
            label="货位状态"
          >
            <template slot-scope="scope">
              <span v-if="scope.row.huoweizt == 1">空闲</span>
              <span v-if="scope.row.huoweizt == 2">占用</span>
              <span v-if="scope.row.huoweizt == 3">锁定</span>
              <span v-if="scope.row.huoweizt == 4">异常</span>
              <span v-if="scope.row.huoweizt == 5">禁用</span>
            </template>
          </el-table-column>
          <el-table-column
            show-overflow-tooltip
            prop="ceng"
            label="层"
          ></el-table-column>
          <el-table-column
            show-overflow-tooltip
            prop="pai"
            label="排"
          ></el-table-column>
          <el-table-column
            show-overflow-tooltip
            prop="lie"
            label="列"
          ></el-table-column>
          <el-table-column
            show-overflow-tooltip
            prop="cangkumc"
            label="仓库名称"
          ></el-table-column>
          <el-table-column
            show-overflow-tooltip
            prop="createName"
            label="创建人"
          ></el-table-column>
          <el-table-column
            show-overflow-tooltip
            prop="createTime"
            label="创建时间"
          ></el-table-column>
          <el-table-column
            show-overflow-tooltip
            label="操作"
            fixed="right"
            min-width="150"
          >
            <template #default="{ row }">
              <el-button type="text" @click="handleEdit(row)">编辑</el-button>
              <el-button type="text" @click="handleDelete(row)">删除</el-button>
              <el-dropdown
                @command="handleCommand(row, $event)"
                trigger="click"
              >
                <span class="el-dropdown-link">
                  更新状态
                  <i class="el-icon-arrow-down el-icon--right"></i>
                </span>
                <el-dropdown-menu slot="dropdown">
                  <el-dropdown-item :command="1">空闲</el-dropdown-item>
                  <el-dropdown-item :command="2">占用</el-dropdown-item>
                  <el-dropdown-item :command="3">锁定</el-dropdown-item>
                  <el-dropdown-item :command="4">异常</el-dropdown-item>
                  <el-dropdown-item :command="5">禁用</el-dropdown-item>
                </el-dropdown-menu>
              </el-dropdown>
            </template>
          </el-table-column>
        </el-table>
      </div>
      <el-pagination
        background
        :current-page="listQuery.pageIndex"
        :page-size="listQuery.pageSize"
        :page-sizes="[10, 20, 30, 50]"
        :layout="layout"
        :total="total"
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
      ></el-pagination>
    </div>
    <edit ref="edit" @fetch-data="fetchData"></edit>
  </div>
</template>

<script>
  let _listQuery = {
    pageIndex: 1,
    pageSize: 20,
    createTime: [],
    mingcheng: '',
    huoweilx: '',
    kufangid: '',
    sort: 'createTime',
    order: 'ASC',
  }
  import search from './components/search.vue'
  import Edit from './components/LocationManagementEdit'
  import {
    queryHuoWeiListPage,
    DelHuowei,
    updateHuoweiStatus,
  } from '@/api/cangkujichu'

  export default {
    name: 'LocationManagement',
    components: { Edit, search },
    data() {
      return {
        listQuery: Object.assign({}, _listQuery),
        list: null,
        listLoading: false,
        layout: 'total,sizes,prev, pager, next, jumper',
        total: 0,
        selectRows: '',
        elementLoadingText: '正在加载...',
        ztlist: [
          {
            id: 1,
            name: '空闲',
          },
          {
            id: 2,
            name: '占用',
          },
          {
            id: 3,
            name: '锁定',
          },
          {
            id: 4,
            name: '异常',
          },
          {
            id: 5,
            name: '禁用',
          },
        ],
      }
    },
    created() {
      this.fetchData()
    },
    methods: {
      handleCommand(item, command) {
        if (item.huoweizt == command) {
          this.$baseMessage('当前状态与操作一致，无需修改', 'error')
        } else {
          updateHuoweiStatus({
            id: item.id,
            huoweizt: command,
          }).then((res) => {
            this.$baseMessage(res.msg, 'success')
            this.fetchData()
          })
        }
      },
      setSelectRows(val) {
        this.selectRows = val
      },
      handleEdit(row) {
        if (row.id) {
          this.$refs['edit'].showEdit(row)
        } else {
          this.$refs['edit'].showEdit()
        }
      },
      handleDelete(row) {
        if (row.id) {
          this.$baseConfirm('你确定要删除当前项吗', null, async () => {
            const { msg } = await DelHuowei({ id: row.id })
            this.$baseMessage('删除成功', 'success')
            this.fetchData()
          })
        } else {
          // if (this.selectRows.length > 0) {
          //   const ids = this.selectRows.map((item) => item.id).join()
          //   this.$baseConfirm('你确定要删除选中项吗', null, async () => {
          //     const { msg } = await doDelete({ ids })
          //     this.$baseMessage(msg, 'success')
          //     this.fetchData()
          //   })
          // } else {
          //   this.$baseMessage('未选中任何行', 'error')
          //   return false
          // }
        }
      },
      handleSizeChange(val) {
        this.listQuery.pageSize = val
        this.fetchData()
      },
      handleCurrentChange(val) {
        this.listQuery.pageIndex = val
        this.fetchData()
      },
      queryData() {
        this.listQuery.pageIndex = 1
        this.fetchData()
      },
      async fetchData() {
        const res = await queryHuoWeiListPage(this.listQuery)
        this.list = res.data.rows
        this.total = res.data.total
      },
      add() {
        this.addshow = true
        this.gobacktitle = '新增'
      },
      search() {
        //搜索
        this.listQuery.pageIndex = 1
        this.fetchData()
      },
      resetlist() {
        //重置
        this.listQuery = Object.assign({}, _listQuery)
        this.fetchData()
      },
    },
  }
</script>
<style lang="scss" scoped>
  .test-container {
    display: flex;
    flex-direction: column;
    padding: 0 !important;
    background: #f6f8f9 !important;
    height: 100%;

    .top-main {
      width: 100%;
      background: #fff;
      padding: 10px 0;
    }

    .bottom-main {
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      flex: 1;
      background-color: #fff;
      margin-top: 10px;
      padding-bottom: 10px;

      .list-button-group {
        display: flex;
        flex-direction: row;
        padding: 20px;

        .button-item {
          padding: 0px 10px;
        }

        .button-item:first-child,
        &:last-child {
          padding: 0px 10px 0 0;
        }
      }

      .table-list {
        flex: 1;
        padding: 0 20px 20px;
      }
    }

    .el-button {
      font-size: 0.14rem !important;
    }
  }

  .el-dropdown-link {
    cursor: pointer;
    color: #409eff;
    margin-left: 10px;
  }

  .el-icon-arrow-down {
    font-size: 14px;
  }
</style>
